﻿<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

	<head>
		<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
		<title>Role Management - 角色管理</title>
		<link type="text/css" rel="stylesheet" href="../bootstrap.min.css" />
	</head>

	<body>

		<div class="document-contents">

			<h3>Role Entity - 角色实体</h3>
			<p>Role entity represents a <strong>role for the application</strong>. It should be derived from 
				<strong>AbpRole</strong> class as shown below:</p>
			<p class="translation">
				角色实体代表了<strong>应用程序的一个角色</strong>。它应该从 <strong>AbpRole</strong> 类派生，如下所示：
			</p>
			<pre lang="cs">public class Role : AbpRole&lt;Tenant, User&gt;
{
    //add your own role properties here
}</pre>
			<p>This class is created when you <a href="/Pages/Documents/Zero/Installation">install</a> module-zero. 
Roles are stored in <strong>AbpRoles</strong> table in the database. You can add 
your custom properties to Role class (and create database migrations for the 
changes).</p>
			<p class="translation">
				这个类是在你<a href="Installation.html">安装</a> module-zero 时被创建的。
				角色存储在数据库中的 <strong>AbpRoles</strong> 表。
				你可以为 Role 类添加你自己的自定义的属性（以及为这些改变创建数据库迁移）。
			</p>
			<p>AbpRole defines some properties. Most importants are:</p>
			<p class="translation">AbpRole 定义了一些属性。其中最重要的如下：</p>
			<ul>
				<li>
					<strong>Name</strong>: Unique name of the role in the tenant.</li>
				<p class="translation"><strong>Name</strong>：租户中角色的唯一名字。</p>
				<li>
					<strong>DisplayName</strong>: Shown name of the role.</li>
				<p class="translation"><strong>DisplayName</strong>：角色的显示名称。</p>
				<li>
					<strong>IsDefault</strong>: Is this role assigned to new users by 
		default?</li>
				<p class="translation"><strong>IsDefault</strong>：表示该角色是否是默认分派给新用户。</p>
				<li>
					<strong>IsStatic</strong>: Is this role static (pre-build and can 
		not be deleted).</li>
				<p class="translation"><strong>IsStatic</strong>：表示该角色是否是静态的（预生成的且不能删除的）。</p>
			</ul>
			<p>Roles are used to <strong>group permissions</strong>. When a user has a role, 
then he/she will have all permissions of that role. A user can have <strong>
multiple</strong> roles. Permissions of this user will be a merge of all 
permissions of all assigned roles.</p>
			<p class="translation">
				角色是被用来<strong>组织权限</strong>的。
				当一个用户拥有了某个角色时，那他将会拥有该角色的所有权限。
				一个用户可以有<strong>多个</strong>角色。
				用户的权限是该用户所拥有角色的所有权限的并集。
			</p>
			<h4>Dynamic vs Static Roles - 动态 VS 静态角色</h4>
			<p>In module-zero, roles can be 
dynamic or static:</p>
			<p class="translation">
				在 module-zero 中，角色可以是动态的或静态的。
			</p>
			<ul>
				<li>
					<strong>Static role</strong>: A static role has a known <strong>name
					</strong>(like 'admin') and can not change this name (we can change <strong>
	display name</strong>). It exists on the system startup and can not be 
	deleted. Thus, we can write codes based on a static role name.</li>
				<p class="translation">
					<strong>静态角色</strong>：静态角色是有一个已知的<strong>名称</strong>（比如 ‘admin’），且不能更改这个名称（我们可以修改<strong>显示名称</strong>）。
					在系统启动的时候它已经存在了，并且不能删除。
					因此，我们可以基于一个静态角色名称来编写代码。
				</p>
				<li>
					<strong>Dynamic (non static) role</strong>: We can create a dynamic role 
	after deployment. Then we can grant permissions for that role, we can assign 
	the role to some users and we can delete it. We can not know names of 
	dynamic roles in development time.</li>
				<p class="translation">
					<strong>动态（非静态）角色</strong>：我们可以在部署之后创建动态的角色。
					然后我们可以为这个角色授予权限，我们也可以把该角色指派给其他用户并且可以删除它。
					在开发的时候，我们不能知道动态角色的名称。
				</p>
			</ul>

			<p>Use <strong>IsStatic</strong> property to set it for a role. Also, we should 
				<strong>register </strong>static 
	roles on <a href="/Pages/Documents/Module-System">
	PreInitialize</a> of our module. Assume that we have an "Admin" static role 
	for tenants:</p>
			<p class="translation">
				使用 <strong>IsStatic</strong> 属性设置角色是静态的还是动态的。同时，我们应该在模块的 <a href="../Module-System.html">PreInitialize</a> 上<strong>注册</strong>静态角色。
				假设我们对租户拥有一个“Admin”静态角色：
			</p>
			<pre lang="cs">Configuration.Modules.Zero().RoleManagement.StaticRoles.Add(new StaticRoleDefinition(&quot;Admin&quot;, MultiTenancySides.Tenant));</pre>
			<p>Thus, module-zero will be aware of static roles.</p>
			<p class="translation">
				因此，module-zero 将会知道这个静态角色。
			</p>
			<h4>Default Roles - 默认角色</h4>
			<p>One or more roles can be set as <strong>default</strong>. Default roles are 
assigned to new added/registered users as default. This is not a development 
time property and can be set or changed after deployment. Use <strong>IsDefault</strong> 
	property to set it.</p>
			<p class="translation">
				可以设置一个或多个<strong>默认</strong>角色。
				默认情况下，默认角色被指派给新添加或新注册的用户。
				这不是一个开发时属性，并且可以在部署后进行设置或者改变。
				使用 <strong>IsDefault</strong> 属性设置这些。
			</p>
			<h3>Role Manager - 角色管理</h3>
			<p>
				<strong>RoleManager </strong>is a service to perform <strong>domain logic</strong> 
for roles:</p>
			<p class="translation">
				<strong>RoleManager </strong>是执行角色领域逻辑的服务：
			</p>
			<pre lang="cs">public class RoleManager : AbpRoleManager&lt;Tenant, Role, User&gt;
{
    //...
}</pre>
			<p>You can <a href="/Pages/Documents/Dependency-Injection">inject</a> and use 
RoleManager to create, delete, update roles, grant permissions for 
roles and much more. You can add your own methods here. Also, you can
				<strong>override</strong> any method of <strong>AbpRoleManager</strong> base class for your own needs.</p>
			<p class="translation">
				你可以<a href="../Dependency-Injection.html">注入</a>并使用 RoleManager 来创建，删除，更新角色，为角色授权以及更多。
				你可以在这里添加你自己的方法。并且你可以<strong>重写</strong> <strong>AbpRoleManager</strong> 基类中的任何方法来满足自己的需要。
			</p>
			<p>Like UserManager, Some methods of RoleManager also return IdentityResult 
	as a result instead of throwing exceptions for some cases. See
				<a href="/Pages/Documents/Zero/User-Management">user management</a> document 
	for more information.</p>
			<p class="translation">
				像 UserManager 一样，RoleManager 的一些方法也返回了 IdentityResult 作为结果而不是抛出某种情况的异常。
				参阅<a href="User-Management.html">用户管理</a>文档获取更多信息。
			</p>
			<h3>Multi Tenancy - 多租户</h3>
			<p>Similar to user management, role management also works for single tenant 
	in one time in a multi-tenant application. See
				<a href="/Pages/Documents/Zero/User-Management#multi-tenancy">user 
	management</a> document for more information.</p>
			<p class="translation">
				与用户管理类似，角色管理也将也是在多租户应用程序中为单租户工作的。
				参阅<a href="User-Management.html">用户管理</a>文档获取更多信息。
			</p>

		</div>

	</body>

</html>
